Оцінка складності алгоритмів

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2022
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування складних алгоритмів

Частина тексту файла

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» ЗВІТ до лабораторної роботи № 1 з дисципліни «Програмування складних алгоритмів» Тема «Оцінка складності алгоритмів» Варіант № 24 Дата «12» лютого 2022 Лабораторна робота № 1: Мета роботи: Метою лабораторної роботи є отримання практичних навичок визначати часову складність алгоритму. Навчитися будувати алгоритми з мінімальною часовою складністю для вирішення поставлених задач. Завдання до роботи Сформувати двовимірний масив цілих чисел, використовуючи випадкові числа. Провести оцінку часової складності алгоритму, використовуючи О-символіку в найгіршому або/і в середньому. Порівняти час роботи та кількість ітерацій/кількість кроків роботи програми з різною розмірністю масиву (10*10, 50*50, 100*100). Оцінку часу роботи навести у вигляді графіка, або таблиці. Завдання відповідно до варіанту: Завдання 1 24 Поставити на головну діагональ матриці мінімальний елемент стовпчика   Завдання 2 24 Якщо в рядку від’ємних елементів більше ніж додатних, циклічно зсунути елементи рядка вліво на 1 елемен   1.2. Теоретичні відомості Складність алгоритму в комп'ютерних науках є обчислювальною складністю алгоритму, яка описує час потрібний для виконання алгоритму. Вона зазвичай визначається шляхом підрахунку кількості елементарних операцій, виконуваних алгоритмом, при цьому вважають, що кожна елементарна операція виконується за фіксовану кількість часу. Таким чином, кількість часу і кількість елементарних операцій, необхідних для виконання алгоритму, відрізняються постійним множником. Оцінка складності Складність алгоритмів зазвичай оцінюють за часом виконання або по використовуваній пам’яті. В обох випадках складність залежить від розмірів вхідних даних: масив з 100 елементів буде оброблений швидше, ніж аналогічний з 1000. При цьому мова йде не про точний час обчислень, який залежить від процесора, типу даних, мови програмування тощо. Оцінюється складність при прагненні розміру вхідних даних до нескінченності. При цьому вважають, що кожна елементарна операція виконується за однаковий час. Часову складність оцінюють для найгіршого випадку і визначають як максимальний час, необхідний для обробки алгоритмом будь-якої множини з n елементів. Часова складність алгоритму зазвичай визначається виразом O (f (n)) (або так званої О—нотації).  Вираз O(f(n)) означає, що час виконання алгоритму зростає з тією ж швидкістю, що і функція  f (n). Поширені складності алгоритмів • O(n) • O(n2) • O(n log2n) • O(2n) Приклад: Розглянемо код, який для масиву A[n, n]  знаходить максимальний елемент у кожному рядку. Розв’язання for i:=1 to N do   begin    max:=A[i,1];    for j:=1 to N do           if A[i,j]>max then  max:=A[i,j]    writeln(max);  end; У цьому алгоритмі змінна і змінюється від 1 до  n. При кожній зміні і, змінна j теж змінюється від 1 до  n. Під час кожної з  n ітерацій зовнішнього циклу, внутрішній цикл теж виконується  n раз. Загальна кількість ітерацій внутрішнього циклу дорівнює  n* n. Це визначає складність алгоритму O(n^2). 1.3. Результати роботи Завдання 1. Написано програмний код, який реалізує задачу поставити на головну діагональ матриці мінімальний елемент стовпчика. Спочатку з консолі задається розмір масиву. Після цього масив заповнюється генератором випадкових чисел та виводиться на екран. Далі масив перетворюється, виводиться час і виводиться час роботи програми. Алгоритм реалізовано за допомогою двох вкладених циклів, що завжди ітеруються від 0 до розміру масиву, тому складність алгоритму: N*N = O(N2) Розмір масиву Ітерації Час виконання  10x10 100 4.6ms  50x50 2500 54ms  100x100 10000 211ms  Нижче в таблиці представлено залежність часу виконання від розмірів масиву та відповідно кількості ітерацій. Завдання 2. Написано програмний код, який реалізує задачу, якщо в рядку від’ємних елементів більше ніж додатних, циклічно зсунути елементи рядка вліво на 1 елемен...
Антиботан аватар за замовчуванням

09.05.2023 18:05

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини